<?php

/**
 * Controller is the customized base controller class.
 * All controller classes for this application should extend from this base class.
 */
class Controller extends CController
{

    /**
     * @var string the default layout for the controller view. Defaults to '//layouts/column1',
     * meaning using a single column layout. See 'protected/views/layouts/column1.php'.
     */
    public $layout = '//layouts/column1';

    /**
     * @var array context menu items. This property will be assigned to {@link CMenu::items}.
     */
    public $menu = array();

    /**
     * @var array the breadcrumbs of the current page. The value of this property will
     * be assigned to {@link CBreadcrumbs::links}. Please refer to {@link CBreadcrumbs::links}
     * for more details on how to specify this property.
     */
    public $breadcrumbs = array();

    /**
     * Catch all action - used as a workaround to support dashed action names like my-action => actionMyAction (compatible with Zend Framework)
     * @param string $action Action that was not found within this controller
     */
    public function missingAction($action)
    {
        $action = explode('-', $action);
        $action = array_map('strtolower', $action);
        $action = array_map('ucfirst', $action);
        $action = implode('', $action);
        if (method_exists($this, 'action' . $action) || array_key_exists('action' . $action, $this->actions())) {
            $this->setAction($action);
            $this->run($action);
        } else {
            throw new CHttpException(404, Yii::t('main', 'Action "{action}" does not exist in "{controller}".', array(
                        '{action}' => 'action' . $action,
                        '{controller}' => get_class($this),
                    )));
        }
    }

}